1
Fondements architecturaux de l’écosystème HIP
AI022Lesson 3
00:00

Le Écosystème HIP est conçu comme une couche d'abstraction mince destinée à assurer la compatibilité du code source entre les architectures AMD et NVIDIA. Il utilise le ROCm (Radeon Open Compute) pile, en particulier en exploitant le Architecture système hétérogène (HSA) runtime et le Pilote de fusion de noyaux (KFD).

1. Initialisation du démarrage

L'initialisation commence par des échanges de poignées de pilotes de noyau de bas niveau via hsa_init(0, ...) et hsaKmtOpenKFD(...). Ces appels d'établissement créent le pont de communication entre les applications en espace utilisateur et le matériel GPU AMD.

2. Découverte de la topologie et des propriétés

Avant de lancer les noyaux, le runtime identifie les capacités matérielles en utilisant hsaKmtAcquireSystemProperties et hsaKmtGetNodeProperties. Il mappe la mémoire physique aux nœuds GPU en utilisant hsaKmtMapMemoryToGPUNodes, garantissant la visibilité de la table de pages pour le périphérique.

3. La chaîne de compilation

Le pont entre CUDA et HIP repose sur deux piliers : hipify-perl (transpilateur basé sur des expressions régulières) et hipcc (enveloppe de compilateur).

# Exemple de workflow de portage
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. Logique de versionnage

La compatibilité est assurée par une formule précise afin de garantir que hipRuntimeGetVersion correspond aux tables d’extension HSA :

$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$

Couche d’application (./square.out)Couche HIP (hipcc / API runtime)Runtime HSA / Tables d’extensionPilote de noyau (KFD) & Matériel
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>